package org.darcy.service.org;

import java.util.List;

import org.darcy.entity.org.Company;
import org.darcy.entity.privilege.SysUser;
import org.darcy.framework.generic.GenericService;
import org.darcy.framework.model.PageData;
import org.darcy.framework.model.PageParam;
import org.darcy.utils.vo.ReturnVo;
import org.darcy.vo.org.OrgTreeVo;

/**
 * 1.组织架构：企业信息
 **/
public interface CompanyService extends GenericService<Company> {

	/**
	 * Company列表(分页)
	 * 
	 * @param param 分页参数
	 */
	PageData<Company> page(PageParam<Company> param);
	
	/**
	 * Company列表(不分页)
	 * 
	 * @param param 分页参数
	 */
	List<Company> list(Company param);

	/**
	 * 导入公司
	 * 
	 * @param companies 公司列表
	 * @return
	 */
	ReturnVo<String> importCompany(List<Company> companies, SysUser loginUser);

	/**
	 * 递归得到所有的子公司ids
	 *
	 * @param id  id
	 * @param ids ids
	 * @return
	 */
	void getAllCompanyIds(Integer id, List<Integer> ids);

	/**
	 * 添加或者保存公司
	 *
	 * @param company   公司
	 * @param loginUser 登录账号
	 */
	void saveOrUpdate(Company company, SysUser loginUser);

	/**
	 * 获取公司树
	 *
	 * @return
	 */
	List<OrgTreeVo> getCompanyTree(String keyword);

	/**
	 * 删除公司
	 *
	 * @param ids 公司ids
	 * @return
	 */
	ReturnVo<String> deleteByIds(List<String> ids);

	/**
	 * 通过编码获取公司
	 * 
	 * @param code 编码
	 * @return
	 */
	Company getCompanyByCode(String code);
}
